GridSearchCV এবং RandomizedSearchCV হল দুটি জনপ্রিয় পদ্ধতি যা মেশিন লার্নিং মডেলের হাইপারপ্যারামিটার টিউনিং করার জন্য ব্যবহৃত হয়। এই দুটি পদ্ধতি মডেলের পারফরম্যান্সকে অপ্টিমাইজ করতে সাহায্য করে, যাতে সঠিক হাইপারপ্যারামিটার সেটিংস নির্বাচন করা যায় এবং মডেলটি সর্বোচ্চ পারফরম্যান্স প্রদান করতে পারে।
1. GridSearchCV
GridSearchCV হল একটি পদ্ধতি যা একটি নির্দিষ্ট হাইপারপ্যারামিটার স্পেসের উপর একটি পূর্ণ পরীক্ষা চালায়। এটি সমস্ত সম্ভাব্য হাইপারপ্যারামিটার কম্বিনেশন পরীক্ষা করে এবং সর্বোত্তম হাইপারপ্যারামিটার সেট নির্বাচন করে।
কিভাবে কাজ করে:
- GridSearchCV একটি "grid" তৈরি করে, যেখানে প্রতিটি হাইপারপ্যারামিটার (যেমন,
n_estimators,max_depthএর মত) জন্য কিছু সম্ভাব্য মান দেওয়া হয়। - এটি প্রতিটি সম্ভাব্য কম্বিনেশন দিয়ে মডেলটি প্রশিক্ষণ দেয় এবং মূল্যায়ন করে।
- প্রতিটি হাইপারপ্যারামিটার কম্বিনেশন পরীক্ষা করার পর, এটি সেরা কম্বিনেশন নির্বাচন করে যা সর্বোচ্চ পারফরম্যান্স দেয়।
ফর্মুলা:
from sklearn.model_selection import GridSearchCV
# মডেল তৈরি
model = RandomForestClassifier()
# হাইপারপ্যারামিটার স্পেস
param_grid = {'n_estimators': [10, 50, 100], 'max_depth': [5, 10, None]}
# GridSearchCV এর মাধ্যমে হাইপারপ্যারামিটার টিউনিং
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=5)
# মডেল ফিট করা
grid_search.fit(X_train, y_train)
# সেরা হাইপারপ্যারামিটার
print("Best parameters found: ", grid_search.best_params_)
ফায়দা:
- সঠিক হাইপারপ্যারামিটার খুঁজে বের করার জন্য এটি খুব কার্যকর।
- Cross-validation ব্যবহার করার মাধ্যমে মডেলটি যেকোনো অপ্রত্যাশিত ফলাফল থেকে রক্ষা পায়।
সীমাবদ্ধতা:
- Computationally expensive হতে পারে, বিশেষত যখন হাইপারপ্যারামিটার স্পেস খুব বড় হয়। সমস্ত কম্বিনেশন পরীক্ষা করার জন্য সময় এবং শক্তি অনেক লাগে।
2. RandomizedSearchCV
RandomizedSearchCV একটি পদ্ধতি যা GridSearchCV এর তুলনায় কম্পিউটেশনালভাবে কম খরচে থাকে। এটি একটি নির্দিষ্ট সংখ্যক র্যান্ডম হাইপারপ্যারামিটার কম্বিনেশন পরীক্ষা করে, তাই এটি সমস্ত সম্ভাব্য কম্বিনেশন পরীক্ষা করার পরিবর্তে কিছু সম্ভাব্য হাইপারপ্যারামিটার কম্বিনেশন নিয়ে কাজ করে।
কিভাবে কাজ করে:
- RandomizedSearchCV একটি random স্যাম্পলিং পদ্ধতি ব্যবহার করে, যেখানে একটি হাইপারপ্যারামিটার স্পেস থেকে কয়েকটি র্যান্ডম মান নির্বাচন করা হয়।
- এটি ডেটাতে কম্পিউটেশনাল খরচ কমানোর জন্য একটি নির্দিষ্ট সংখ্যক হাইপারপ্যারামিটার কম্বিনেশন পরীক্ষা করে।
- RandomizedSearchCV হাইপারপ্যারামিটার স্পেসের একাধিক সম্ভাব্য মান থেকে র্যান্ডম নমুনা নিয়ে একটি দ্রুত পরীক্ষা চালায় এবং সর্বোত্তম মান খুঁজে বের করে।
ফর্মুলা:
from sklearn.model_selection import RandomizedSearchCV
from scipy.stats import randint
# মডেল তৈরি
model = RandomForestClassifier()
# হাইপারপ্যারামিটার স্পেস
param_dist = {'n_estimators': randint(10, 200), 'max_depth': [5, 10, None]}
# RandomizedSearchCV এর মাধ্যমে হাইপারপ্যারামিটার টিউনিং
random_search = RandomizedSearchCV(estimator=model, param_distributions=param_dist, n_iter=100, cv=5)
# মডেল ফিট করা
random_search.fit(X_train, y_train)
# সেরা হাইপারপ্যারামিটার
print("Best parameters found: ", random_search.best_params_)
ফায়দা:
- কম্পিউটেশনালভাবে সাশ্রয়ী: এটি তুলনামূলকভাবে কম সময়ে সবচেয়ে ভাল হাইপারপ্যারামিটার কম্বিনেশন খুঁজে বের করতে সাহায্য করে।
- বড় হাইপারপ্যারামিটার স্পেস এর জন্য উপযুক্ত, কারণ এটি পুরো স্পেস পরীক্ষা না করে কিছু র্যান্ডম পয়েন্ট পরীক্ষা করে।
সীমাবদ্ধতা:
- এটি কোনো গ্যারান্টি দেয় না যে, এটি সেরা পারফরম্যান্স দেবে, কারণ এটি পুরো হাইপারপ্যারামিটার স্পেস পরীক্ষা করে না।
GridSearchCV vs RandomizedSearchCV
| বৈশিষ্ট্য | GridSearchCV | RandomizedSearchCV |
|---|---|---|
| অপারেশন | সমস্ত সম্ভব কম্বিনেশন পরীক্ষা করে। | কিছু র্যান্ডম কম্বিনেশন পরীক্ষা করে। |
| কম্পিউটেশনাল খরচ | বেশি, কারণ এটি সমস্ত কম্বিনেশন পরীক্ষা করে। | কম, কারণ এটি সীমিত কম্বিনেশন পরীক্ষা করে। |
| পারফরম্যান্স | নির্দিষ্ট হাইপারপ্যারামিটার স্পেসের জন্য সর্বোত্তম ফলাফল দেয়। | দ্রুত ফলাফল দেয়, তবে সেরা ফলাফল পাওয়ার গ্যারান্টি নেই। |
| ব্যবহার | ছোট হাইপারপ্যারামিটার স্পেসে ভালো ফলাফল দেয়। | বড় হাইপারপ্যারামিটার স্পেসে বেশি কার্যকর। |
সারাংশ
- GridSearchCV হলো একটি শক্তিশালী পদ্ধতি যা সমস্ত হাইপারপ্যারামিটার কম্বিনেশন পরীক্ষা করে এবং সেরা ফলাফল দেয়, তবে এটি কম্পিউটেশনালভাবে ব্যয়বহুল হতে পারে।
- RandomizedSearchCV হলো একটি আরও কম্পিউটেশনাল সাশ্রয়ী পদ্ধতি যা র্যান্ডম স্যাম্পলিং ব্যবহার করে এবং দ্রুত ফলাফল দেয়, তবে এটি সেরা হাইপারপ্যারামিটার পাওয়ার গ্যারান্টি দেয় না।
যখন হাইপারপ্যারামিটার স্পেস বড় হয় বা দ্রুত ফলাফল প্রয়োজন, তখন RandomizedSearchCV ব্যবহার করা যেতে পারে, আর যখন সঠিক ফলাফল প্রয়োজন এবং সময়ের বেশি সীমাবদ্ধতা নেই, তখন GridSearchCV ব্যবহার করা যেতে পারে।
Read more